package exercises.newcoder.solution;

import exercises.newcoder.util.ListNode;

/**
 * <a href="https://www.nowcoder.com/practice/886370fe658f41b498d40fb34ae76ff9?tpId=13&tqId=1377477&ru=/ta/sql-quick-study&qru=/ta/sql-quick-study/question-ranking">
 * JZ14 链表中倒数最后k个结点</a>
 *
 * <p><span color="#87CEEB">描述:</span>
 * 输入一个长度为 n 的链表，设链表中的元素的值为 ai ，输出一个链表，该输出链表包含原链表中从倒数第 k 个结点至尾节点的全部节点。
 * 如果该链表长度小于k，请返回一个长度为 0 的链表。
 * <p>
 * 示例1
 * 输入：
 * {1,2,3,4,5},3
 * <p>
 * 返回值：
 * {3,4,5}
 * <p>
 * 示例2
 * <p>
 * 输入：
 * {2},8
 * <p>
 * 返回值：
 * {}
 * <p>
 *
 * @author or2
 * @date 2021年09月29日 时间: 8:34
 */
public class FindKthToTail {
    /**
     * 代码中的类名、方法名、参数名已经指定，请勿修改，直接返回方法规定的值即可
     *
     * @param pHead ListNode类
     * @param k     int整型
     * @return ListNode类
     */
    public ListNode FindKthToTail(ListNode pHead, int k) {
        ListNode preK = pHead;
        for (int i = 0; i < k; i++) {
            if (preK == null)
                return null;
            preK = preK.next;
        }
        if (preK == null)
            return pHead;

        for (; preK != null; preK = preK.next)
            pHead = pHead.next;

        return pHead;
    }
}
